package com.neko.Thread_Learning;

/**
 * 测试 stop
 * ------------
 *  1、建议 Thread 正常停止 --> 利用次数，不建议死循环
 *  2、使用 signal/flag 标志位 -> 设置一个标志位
 *  3、不要使用 stop() / destory() 等【过时方法】，或者JDK官方不建议使用的方法
 *
 * */
public class t9_Thread_State implements Runnable {

    // 1、设置一个【标志位】
    private boolean flag = true;

    @Override
    public void run() {
        int i = 0;

        while (flag) { // true -> false
            System.out.println("run... Thread " + i++);
        }
    }

    /**
     *  2、设置一个【公开的方法】 -> 用于【停止 Thread】，转换【标志位】
     * */
    public void stop() {
        this.flag = false;
    }


    // -------------- Main -----------------
    public static void main(String[] args) {

        t9_Thread_State testStop = new t9_Thread_State();
        new Thread(testStop).start(); // 启动 Thread -> .

        for (int i=0; i<100; i++) {
            System.out.println("main -- " + i);

            if (i == 90) {
                // 调用 stop 方法切换标志位，让 Thread 停止
                testStop.stop();
                System.out.println("Thread 该停止了...");
            }
        }
    }


}
